﻿using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using Business;
using Model;

namespace Gui.Web.Forms
{
    public partial class IngresoErrores : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.IsPostBack) return;

            FechaIngreso.Text = DateTime.Now.ToString("dd/MM/yyyy");
            var colaboradoresBusiness = new ColaboradorBusiness();
            ListaColaboradores.DataSource = colaboradoresBusiness.ObtenerColaboradores(true).ColaboradoresModel;
            ListaColaboradores.DataBind();
            CargarDatos();
        }

        protected void Cancelar_Click(object sender, EventArgs args)
        {

        }

        protected void Guardar_Click(object sender, EventArgs args)
        {
            foreach (GridViewRow filaGrid in DatosColaborador.Rows)
            {
                var dataKey = DatosColaborador.DataKeys[filaGrid.RowIndex];
                if (dataKey != null)
                {
                    var idColaborador = int.Parse(dataKey[0].ToString());
                    var idError = int.Parse(dataKey[1].ToString());
                    var erroresPorColaborador = new ErroresBusiness();
                    erroresPorColaborador.InsertarActualizarErroresPorColaborador(
                        new ErroresColaborador
                        {
                            IdColaborador = idColaborador,
                            Cantidad = Convert.ToInt32(((TextBox)filaGrid.FindControl("TextoCantidad")).Text),
                            FechaIngreso = DateTime.Parse(FechaIngreso.Text),
                            IdError = idError,
                        });
                }
            }
        }

        protected void Colaborador_SelectedIndexChanged(object sender, EventArgs e)
        {
            CargarDatos();
        }

        protected void FechaIngreso_TextChanged(object sender, EventArgs e)
        {
            CargarDatos();
        }

        private void CargarDatos()
        {
            DateTime fechaIngreso;
            int idColaborador;

            if (!VerficarDatos(out fechaIngreso, out idColaborador)) return;

            var errores = new ErroresBusiness();
            DatosColaborador.DataSource = errores.ObtenerErroresPorColaborador(idColaborador, fechaIngreso).DatosErroresColaborador;
            DatosColaborador.DataBind();
        }

        private bool VerficarDatos(out DateTime fechaIngreso, out int idColaborador)
        {
            fechaIngreso = DateTime.Now;
            idColaborador = 0;

            return (ListaColaboradores.SelectedItem != null &&
                        !string.IsNullOrEmpty(ListaColaboradores.SelectedItem.Value) &&
                        !string.IsNullOrEmpty(FechaIngreso.Text) &&
                        DateTime.TryParse(FechaIngreso.Text, out fechaIngreso) &&
                        int.TryParse(ListaColaboradores.SelectedItem.Value, out idColaborador));
        }
    }
}